// const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); 
const CompressionPlugin = require("compression-webpack-plugin")
// https://segmentfault.com/q/1010000016549193?utm_source=tag-newest
module.exports = {
  pwa: {
    iconPaths: {
      favicon32: 'favicon.ico',
      favicon16: 'favicon.ico',
      appleTouchIcon: 'favicon.ico',
      maskIcon: 'favicon.ico',
      msTileImage: 'favicon.ico'
    }
  },
  // integrity: false,
  configureWebpack: config => {
    if (process.env.NODE_ENV === 'production') { // 去掉console.log
      config.optimization.minimizer[0].options.terserOptions.compress.warnings = true
      config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true
      config.optimization.minimizer[0].options.terserOptions.compress.drop_debugger = true
      config.optimization.minimizer[0].options.terserOptions.compress.pure_funcs = ['console.log']
    }

    if (process.env.NODE_ENV === 'production') {
      return {
        plugins: [
          new CompressionPlugin({
            test: /\.js$|\.html$|\.css/, //匹配文件名
            threshold: 10240,//对超过10k的数据压缩
            deleteOriginalAssets: false //不删除源文件
          })
          // new CompressionPlugin({
          //   // 目标文件名称。[path] 被替换为原始文件的路径和 [query] 查询
          //   asset: '[path].gz[query]',
          //   // 使用 gzip 压缩
          //   algorithm: 'gzip',
          //   // 处理与此正则相匹配的所有文件
          //   test: new RegExp(
          //     '\\.(js|css)$'
          //   ),
          //   // 只处理大于此大小的文件
          //   threshold: 10240,
          //   // 最小压缩比达到 0.8 时才会被压缩
          //   minRatio: 0.8
          // })
        ]
      }
    }
  },
  // chainWebpack: config => { // 打包分析 
  //   if (process.env.use_analyzer) {
  //     config
  //       .plugin('webpack-bundle-analyzer')
  //       .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
  //   }

  //   // 移除 prefetch 插件
  //   config.plugins.delete("prefetch");
  //   // 移除 preload 插件
  //   config.plugins.delete('preload');
  //   // 压缩代码
  //   config.optimization.minimize(true);
  //   // 分割代码
  //   config.optimization.splitChunks({
  //     chunks: 'all'
  //   })

  //   // 通过 chainWebpack 调整图片的大小限制，我们将图片大小限制设置为 6kb，低于6kb的图片全部被内联，高于6kb的图片会放在单独的img文件夹中。
  //   const imagesRule = config.module.rule("images")
  //   imagesRule
  //     .use('url-loader')
  //     .loader('url-loader')
  //     .tap(options => Object.assign(options, { limit: 6144 }))
  // },

  // css: {
  //   loaderOptions: {
  //     css: {},
  //     sass: {
  //       additionalData: `@import "@/style/variables.scss";`
  //     },
  //     postcss: {
  //       plugins: [
  //         require('postcss-px2rem')({
  //           // remUnit: 37.5
  //           remUnit: 192
  //         })
  //       ]
  //     }
  //   }
  // },

  // 根域上下文目录
  // publicPath: '/', // publicPath:'/rm', 这里可以设置二级文件夹作为主页面

  // build时构建文件的目录 构建时传入 --no-clean 可关闭该行为
  // outputDir: 'build',

  // build时放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
  // assetsDir: 'assets',

  // 指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径。
  // indexPath: 'index.html',

  devServer: {
    port: 8082,
    open: true,
    proxy: {
      '/api': {
        target: 'http://127.0.0.1:8080',
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/'
        }
      }
    },
  },
  productionSourceMap: process.env.NODE_ENV === 'production' ? false : true,
  lintOnSave: true,   // 取消 eslint 验证
}